Mission Control agent and step layouts

jamesperet 11 年之前
父節點
當前提交
8c5e691428

+ 13 - 2
app/controllers/missions_controller.rb

@@ -10,6 +10,7 @@ class MissionsController < ApplicationController
10 10
   def index
11 11
     @user = User.find(current_user.id)
12 12
     @missions = @user.mission_agent_invites.where(:status => 'accepted')
13
+    @mission_control = Mission.where(:owner => @user)
13 14
   end
14 15
   
15 16
   def list
@@ -65,7 +66,7 @@ class MissionsController < ApplicationController
65 66
       
66 67
         
67 68
         
68
-        format.html { redirect_to @mission, notice: 'Mission was successfully updated.' }
69
+        format.html { redirect_to mission_control_path(@mission), notice: 'Mission was successfully updated.' }
69 70
         format.json { head :no_content }
70 71
       else
71 72
         format.html { render action: 'edit' }
@@ -122,6 +123,16 @@ class MissionsController < ApplicationController
122 123
       format.json { head :no_content }
123 124
     end
124 125
   end
126
+  
127
+  def validate_agent_step
128
+    @step = MissionAgentStep.find(params[:mission_agent_step][:id])
129
+    @step.proof = params[:mission_agent_step][:proof]
130
+    @step.completed = true
131
+    @mission = @step.mission_agent.mission
132
+    if @step.save
133
+      redirect_to mission_path(@mission), notice: 'Step completed!'
134
+    end
135
+  end
125 136
 
126 137
   private
127 138
     # Use callbacks to share common setup or constraints between actions.
@@ -131,6 +142,6 @@ class MissionsController < ApplicationController
131 142
 
132 143
     # Never trust parameters from the scary internet, only allow the white list through.
133 144
     def mission_params
134
-      params.require(:mission).permit(:title, :description, :status, :agent_search_start, :agent_search_end, :mission_agents_attributes  => [:id, :mission_id, :description, :_destroy], :mission_agent_steps_attributes => [:id, :mission_agent_id, :description, :_destroy])
145
+      params.require(:mission).permit(:title, :description, :status, :agent_search_start, :agent_search_end, :mission_agents_attributes  => [:id, :mission_id, :description, :_destroy], :mission_agent_steps_attributes => [:id, :mission_agent_id, :description, :proof, :_destroy])
135 146
     end
136 147
 end

+ 2 - 3
app/views/layouts/front_end.html.erb

@@ -62,9 +62,8 @@
62 62
           </div>
63 63
         </div><!--/row-->
64 64
 
65
-      <footer>
66
-        <p>&copy; Company 2014</p>
67
-      </footer>
65
+      <%= render 'layouts/partials/footer' %>
66
+
68 67
 
69 68
     </div> <!-- /container -->
70 69
 

+ 4 - 0
app/views/layouts/partials/_footer.html.erb

@@ -0,0 +1,4 @@
1
+<footer>
2
+	<hr>
3
+	<p style="text-align: center;">&copy; Avalanche 2014</p>
4
+</footer>

+ 6 - 0
app/views/missions/_mission_status.html.erb

@@ -0,0 +1,6 @@
1
+<span class="label <%= @status_label %> pull-right" style="margin-top: 2px; padding-left: 20px; padding-right: 20px">
2
+		  <h4 style="text-align: center">
3
+			  <small style="color: white">status:</small><br>
4
+			  <%= @mission.status %>
5
+		  </h4>
6
+	  </span>

+ 0 - 1
app/views/missions/edit.html.erb

@@ -4,4 +4,3 @@
4 4
 
5 5
 <%= link_to 'Show', @mission %> |
6 6
 <%= link_to 'Back', missions_path %>
7
-<%= link_to 'Launch', mission_launch_path %>

+ 14 - 1
app/views/missions/index.html.erb

@@ -1,5 +1,5 @@
1 1
 <div class="page-header">
2
-  <h1>Current Missions</h1>
2
+  <h1>Assigned Missions</h1>
3 3
 </div>
4 4
 <ul class="thumbnails">
5 5
 <% @missions.each do |invite| %>
@@ -10,4 +10,17 @@
10 10
 	    </div>
11 11
 	</li>
12 12
 <% end %>
13
+</ul>
14
+<div class="page-header">
15
+  <h1>Missions Control</h1>
16
+</div>
17
+<ul class="thumbnails">
18
+<% @mission_control.each do |mission| %>
19
+	<li class="span4">
20
+	    <div class="thumbnail" style= "padding: 5px;">
21
+		      <h3 style= "padding: 5px;"><%= link_to mission.title, mission_control_path(mission) %></h3>
22
+		      <p style= "padding: 5px; height: 50px;"><%= mission.description %></p>
23
+	    </div>
24
+	</li>
25
+<% end %>
13 26
 </ul>

+ 76 - 45
app/views/missions/mission_control.html.erb

@@ -1,60 +1,91 @@
1 1
 <div class="page-header">
2 2
   <h1>
3
-	  Mission Control <small>(<%= @mission.title %>)</small>
3
+	  Mission Control
4
+	   <%= link_to 'Edit', edit_mission_path(@mission), :class => 'btn btn-mini btn-default' %>
5
+	   <%= link_to 'Launch', mission_launch_path, :class => 'btn btn-mini btn-danger' %>
4 6
 	  <% if @mission.status == 'Initializing' %>
5 7
 	  	<% @status_label = 'label'%>
6 8
 	  <% end%>
7 9
 	  <% if @mission.status == 'Launched' %>
8 10
 	  	<% @status_label = 'label-success'%>
9 11
 	  <% end%>
10
-  	  <span class="label <%= @status_label %> pull-right" style="margin-top: 2px;"><h4><%= @mission.status %><h4></span>
12
+  	  <%= render 'mission_status' %>
13
+
11 14
   </h1>
15
+  <small>Director: <%= link_to @mission.owner.username, agent_profile_path(@mission.owner.id) %></small>
12 16
 </div>
13 17
 
14
-<p id="notice"><%= notice %></p>
15
-
16
-<p>
17
-	<strong>Owner: </strong>
18
-	<%= @mission.owner.username %>
19
-
20
-<p>
21
-  <strong>Description:</strong>
22
-  <%= @mission.description %>
23
-</p>
24
-
25
-<p>
26
-  <strong>Status:</strong>
27
-  <%= @mission.status %>
28
-</p>
29
-
30
-<p>
31
-  <strong>Agent search start:</strong>
32
-  <%= @mission.agent_search_start %>
33
-</p>
34
-
35
-<p>
36
-  <strong>Agent search end:</strong>
37
-  <%= @mission.agent_search_end %>
38
-</p>
39
-
40
-<% @agent_number = 1 %>
41
-<% @mission.mission_agents.each do |agent| %>
42
-	<div class="well well-small">
43
-		<h3>Agent <%= @agent_number %></h3>
44
-		<% if agent.user != nil %>
45
-			Name: <%= agent.user.email %><br>
46
-			Status: 
47
-			<% agent.mission_agent_invites.each do |invite| %>
48
-				<% if invite.user = agent.user %>
49
-					<%= invite.status %>
50
-				<% end %>
18
+<p class="lead"><strong>Mission: </strong><%= @mission.title %></p>
19
+<p class="lead"><strong>Details: </strong><%= @mission.description %></p>
20
+<hr>
21
+<h2>Agent List</h2>
22
+<% if @mission.mission_agents.length > 0 %>
23
+	<div class="accordion" id="accordion_agents">
24
+	<% @agent_number = 1 %>
25
+	<% @mission.mission_agents.each do |agent| %>
26
+		<% if agent.mission_agent_invites.last != nil %>
27
+			<% if agent.mission_agent_invites.last.status == 'accepted' %>
28
+				<% @status_label = 'label-success'%>
29
+			<% elsif agent.mission_agent_invites.last.status == 'denied' %>
30
+				<% @status_label = 'label-important'%>
31
+			<% else%>
32
+				<% @status_label = 'label-default'%>
33
+			<% end %>
34
+			<% if agent.mission_agent_steps.length == 0 %>
35
+				<% @agent_status = 'empty'%>
51 36
 			<% end %>
52 37
 		<% else %>
53
-		Agent not found!
38
+			<% @status_label = 'label-important'%>
39
+			<% @agent_status = 'missing'%>
54 40
 		<% end %>
41
+	     <div class="accordion-group" style="margin-bottom: 10px;">
42
+	       <div class="accordion-heading">
43
+	         <a class="accordion-toggle pull-left" data-toggle="collapse" href="#collapse_<%= agent.id %>" >
44
+	          	Agent <%= @agent_number %>
45
+	 			<% if agent.user != nil %>
46
+	 				<% if agent.user.username != nil %>
47
+						 - <%= agent.user.username %>
48
+					<% else %>
49
+					 	 - <%= agent.user.email %>
50
+					<% end %>
51
+	 				<% agent.mission_agent_invites.each do |invite| %>
52
+	 					<% if invite.user = agent.user %>
53
+	 					<% end %>
54
+	 				<% end %>
55
+	 			<% end %>
56
+	         </a>
57
+		    <span class="label <%= @status_label %> pull-right" style="margin-top: 8px; margin-right: 10px">
58
+		    
59
+			   <% if @agent_status != 'missing'%>
60
+	 			  <%= agent.mission_agent_invites.last.status %>
61
+			    <% else %>
62
+			       Agent not found!
63
+			    <% end %>
64
+		    </span>
65
+		    <div class="clearfix"></div>
66
+	       </div>
67
+	       <div id="collapse_<%= agent.id %>" class="accordion-body collapse <% if @agent_status == 'missing' || @agent_status == 'empty' %> out <% else %> in <% end %>">
68
+	         <div class="accordion-inner">
69
+			<div class="row-fluid">
70
+				<ul class="thumbnails">
71
+					<% @step = 1 %>
72
+					<% agent.mission_agent_steps.each do |step| %>
73
+						<li class="span4">
74
+						    <div class="thumbnail" style= "padding: 5px;">
75
+							<h3 style= "padding: 5px;">Step <%= @step %></h3>
76
+							 <p style= "padding: 5px; height: 50px;"><%= step.description %></p>
77
+						</li>
78
+						<% @step = @step + 1 %>
79
+					<% end %>
80
+				</ul>
81
+			</div>
82
+	         </div>
83
+	       </div>
84
+	     </div>
85
+		<% @agent_number = @agent_number + 1 %>
86
+	<% end %>
55 87
 	</div>
56
-	<% @agent_number = @agent_number + 1 %>
57
-<% end %>
58
-
59
-<%= link_to 'Edit', edit_mission_path(@mission) %> |
60
-<%= link_to 'Back', missions_path %>
88
+<% else %>
89
+<br>
90
+<em>No agents were assigned for this mission! Please edit mission settings and add agents in the form.</em>
91
+<% end %>

+ 38 - 17
app/views/missions/show.html.erb

@@ -1,34 +1,55 @@
1 1
 <div class="page-header">
2 2
   <h1>
3
-	  Mission Details <small>(<%= @mission.title %>)</small>
3
+	  <%= @mission.title %> <small>(Mission Details)</small>
4 4
 	  <% if @mission.status == 'Initializing' %>
5 5
 	  	<% @status_label = 'label'%>
6 6
 	  <% end%>
7 7
 	  <% if @mission.status == 'Launched' %>
8 8
 	  	<% @status_label = 'label-success'%>
9 9
 	  <% end%>
10
-  	  <span class="label <%= @status_label %> pull-right" style="margin-top: 2px;"><h4><%= @mission.status %><h4></span>
10
+  	  <%= render 'mission_status' %>
11 11
   </h1>
12
+  <small>Director: <%= link_to @mission.owner.username, agent_profile_path(@mission.owner.id) %></small>
12 13
 </div>
13
-
14
-<p>
15
-  <%= @mission.description %>
16
-</p>
17
-
18
-<p>
19
-	<strong>Mission Director: </strong>
20
-	<%= @mission.owner.username %>
21
-</p>
14
+<p class="lead"><strong>Details: </strong><%= @mission.description %></p>
15
+<p class="lead"><strong>Objective: </strong><%= @agent.first.description %></p>
16
+<ul class="thumbnails">
22 17
 <% @step = 1 %>
23 18
 <% if @agent.length > 0 %>
24 19
 	<% @agent.first.mission_agent_steps.each do |step| %>
25
-		<div>
26
-			<h3>Step <%= @step %></h3>
27
-			<%= step.description %>
28
-		<div>
20
+		<li class="span4">
21
+		    <div class="thumbnail" style= "padding: 5px;">
22
+			<h3 style= "padding: 5px;">Step <%= @step %></h3>
23
+			 <p style= "padding: 5px; height: 50px;"><%= step.description %></p>
24
+			 <a href="#myModal<%= @step %>" role="button" class="btn btn-block btn-default" data-toggle="modal">Validate</a>
25
+		</li>
29 26
 		<% @step = @step + 1 %>
30 27
 	<% end %>
31 28
 <% end %>
32
-<hr>
29
+</ul>
30
+
31
+<% @step = 1 %>
32
+<% @agent.first.mission_agent_steps.each do |step| %>
33 33
 
34
-<%= link_to 'Back', missions_path %>
34
+<!-- Modal -->
35
+<div id="myModal<%= @step %>" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
36
+  <div class="modal-header">
37
+    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
38
+    <h3 id="myModalLabel">Validate Step <%= @step %> </h3>
39
+  </div>
40
+  <%= simple_form_for(step) do |f| %>
41
+	  <div class="modal-body">
42
+	      <%= f.error_notification %>
43
+	      <div class="form-inputs">
44
+		   <%= f.hidden_field :id %>
45
+	        <%= f.input :proof, :label => 'Answer', :input_html => { :class => 'span5'} %> 
46
+	      </div>
47
+	  </div>
48
+	  <div class="modal-footer">
49
+	    <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
50
+	     <%= f.button :submit, 'Validate', :class => 'btn btn-success' %> 
51
+	  </div>
52
+   <% end %>
53
+</div>
54
+<% @step = @step + 1 %>
55
+<% end %>

+ 1 - 0
config/routes.rb

@@ -10,6 +10,7 @@ AvalancheGame::Application.routes.draw do
10 10
   get "missions/:id/launch" => "missions#launch", :as => :mission_launch
11 11
   get "mission_control/:id" => "missions#mission_control", :as => :mission_control
12 12
   get "mission_list" => "missions#list", :as => :mission_list
13
+  patch "mission_agent_step" => "missions#validate_agent_step", :as => :mission_agent_step
13 14
   resources :missions
14 15
   
15 16
   devise_for :users, :skip => [:sessions, :passwords, :confirmations, :registrations]